1. Field of the Invention
This invention relates generally to data communications and more specifically to a technique for determining if a tunnel destination endpoint is reachable.
2. Background Information
A computer network is a geographically distributed collection of interconnected communication links for transporting data between nodes, such as computers. Many types of computer networks are available, with the types ranging from local area networks (LANs) to wide area networks (WANs). The nodes typically communicate by exchanging discrete frames or packets of data according to pre-defined protocols, such as the Transmission Control Protocol/Internet Protocol (TCP/IP) or the Internetwork Packet eXchange (IPX) protocol.
The topology of a computer network can vary greatly. For example, the topology may comprise a single LAN containing a single intermediate node of a type such as, e.g., a hub, with end-nodes attached to the hub, or a more complex network containing one or more local area networks connected together through a complex intermediate internetwork comprising a plurality of other types of intermediate nodes, such as switches or routers, interconnected to form a WAN. Each of these latter intermediate nodes typically comprises a central processor that enables the intermediate node to, inter alia, route or switch the packets of data along the interconnected links from, e.g., a source end-node that originates the data to a destination end-node that is designated to receive the data.
In certain complex networks, the protocol employed by the source and destination end-nodes may be incompatible with the protocol used by the intermediate nodes. For example, a network may be configured such that the source and destination end-nodes communicate using the IPX protocol, whereas, the intermediate nodes exchange data using the IP protocol. Often in such networks, data packets are transferred from a source end-node through the intermediate internetwork to a destination end-node using a technique called “tunneling.”
Broadly stated, a tunnel is a logical path through which encapsulated packets travel from a source endpoint through an internetwork to a destination endpoint. Encapsulation is typically performed at the source endpoint of the tunnel and decapsulation is performed at the destination endpoint. Thus, in a typical tunneling implementation, data packets are encapsulated at the source endpoint, sent through the internetwork infrastructure over the tunnel and decapsulated when they reach the destination endpoint.
Encapsulation typically involves enclosing the data (payload) in an additional header to form an encapsulated packet. The additional header, sometimes called a delivery header, provides routing information that enables the encapsulated packet to traverse the intermediate internetwork. Decapsulation typically involves removing the delivery header of the encapsulated packet, thereby yielding the payload. The term tunneling, in general, is often used when referring to the entire process of encapsulation, transmission and decapsulation of packets.
A protocol that may be used in a tunneling implementation to encapsulate packets is the “Generic Routing Encapsulation” (GRE) protocol defined in Request For Comments (RFC) 1701, RFC 2784 and RFC 2890, which RFCs are available from the Internet Engineering Task Force, Network Working Group, http://www.ietf.org and are hereby incorporated by reference as though fully set forth herein. The GRE protocol enables transmission of an arbitrary network protocol over any other second arbitrary network protocol by encapsulating packets of the first protocol within GRE packets that, in turn, are contained within packets of the second protocol. The GRE protocol is typically executed by intermediate nodes, such as routers or switches, that form the source and destination endpoints of a tunnel.
For example, assume a “payload” packet generated by a source end-node requires encapsulation for delivery through an intermediate network to a destination end-node. At the source endpoint of the tunnel, the payload packet is first encapsulated in a GRE packet comprising the payload packet and a GRE header. The resulting GRE packet is then encapsulated in some other protocol, called a “delivery protocol,” and forwarded to the destination endpoint of the tunnel. This delivery protocol is the protocol used by intermediate nodes of the network to route or switch the encapsulated packet through the intermediate network from the source to the destination endpoints.
One problem associated with the GRE protocol is that it does not provide a mechanism to determine if the destination endpoint of the tunnel is reachable. By not “knowing” if the destination endpoint is reachable, the source endpoint cannot prevent the loss of traffic should the destination endpoint become unreachable due to various conditions such as, e.g., a misconfiguration of the tunnel or the unavailability of destination endpoint. Also, traffic cannot be routed along alternative paths because the source endpoint considers the tunnel operational, i.e., in an “up” state, and thus continues to route the packet traffic to the tunnel even though the traffic is not received at the destination endpoint. Therefore, it would be desirable to provide a mechanism that enables a source endpoint of tunnel to determine if the tunnel's destination endpoint is reachable.